package proyecto.web;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import proyecto.excepcion.DAOExcepcion;
import proyecto.modelo.Categoria;
import proyecto.service.CategoriaService;

public class CategoriasController extends MultiActionController {

    private CategoriaService categoriaService;

    public CategoriaService getCategoriaService() {
        return categoriaService;
    }

    public void setCategoriaService(CategoriaService categoriaService) {
        this.categoriaService = categoriaService;
    }

    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/categorias_mantener");
    }

    public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response) {
        String nombres = request.getParameter("nombre");
        try {
            Collection<Categoria> categorias = categoriaService.buscarPorNombre(nombres);
            System.out.println(categorias);
            request.setAttribute("categorias", categorias);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/admin/categorias_mantener");
    }

    public ModelAndView nuevo(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/categorias_nuevo");
    }

    public ModelAndView insertar(HttpServletRequest request, HttpServletResponse response) {
        Categoria vo = new Categoria();
        vo.setNombre(request.getParameter("nombre"));
        vo.setDescripcion(request.getParameter("descripcion"));
        try {
            categoriaService.insertar(vo);
        } catch (DAOExcepcion e) {
            System.err.println(e.toString());
        }
        return new ModelAndView("redirect:/categorias_mantener.htm");
    }

    public ModelAndView eliminar(HttpServletRequest request, HttpServletResponse response) {
        String idCategoria = request.getParameter("idCategoria");
        try {
            categoriaService.eliminar(Integer.parseInt(idCategoria));
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("redirect:/categorias_mantener.htm");
    }

    public ModelAndView obtener(HttpServletRequest request, HttpServletResponse response) {
        int id = Integer.parseInt(request.getParameter("idCategoria"));
        Categoria vo;
        try {
            vo = categoriaService.obtener(id);
            request.setAttribute("Categoria", vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("/admin/categorias_editar");
    }

    public ModelAndView actualizar(HttpServletRequest request, HttpServletResponse response) {
        int id = Integer.parseInt(request.getParameter("idCategoria"));
        Categoria vo = new Categoria();
        vo.setIdCategoria(id);
        vo.setNombre(request.getParameter("nombre"));
        vo.setDescripcion(request.getParameter("descripcion"));
        try {
            categoriaService.actualizar(vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("redirect:/categorias_mantener.htm");
    }
}
